Micron Document
🎖️GitЯра🎖️


Displaying Raw • Download

examples/simple_repeater/MyMesh.h a7426de0bf938c089531e5e2b2177d989fbc07e7 (a7426de0) Text, 8.31 KB

Tff7b72#Tff7b72pragma once

Tff7b72#Tff7b72include T8b949e<Arduino.h>
Tff7b72#Tff7b72include T8b949e<Mesh.h>
Tff7b72#Tff7b72include T8b949e<RTClib.h>
Tff7b72#Tff7b72include T8b949e<target.h>

Tff7b72#Tff7b72if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
Tff7b72#Tff7b72include T8b949e<InternalFileSystem.h>
Tff7b72#Tff7b72elif defined(RP2040_PLATFORM)
Tff7b72#Tff7b72include T8b949e<LittleFS.h>
Tff7b72#Tff7b72elif defined(ESP32)
Tff7b72#Tff7b72include T8b949e<SPIFFS.h>
Te6edf3using Te6edf3File Tff7b72= Te6edf3fsTff7b72:Tff7b72:Te6edf3FileTb4b4b4;
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72ifdef WITH_RS232_BRIDGE
Tff7b72#Tff7b72include T8b949e"helpers/bridges/RS232Bridge.h"
Tff7b72#Tff7b72define WITH_BRIDGE
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72ifdef WITH_ESPNOW_BRIDGE
Tff7b72#Tff7b72include T8b949e"helpers/bridges/ESPNowBridge.h"
Tff7b72#Tff7b72define WITH_BRIDGE
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72include T8b949e<helpers/AdvertDataHelpers.h>
Tff7b72#Tff7b72include T8b949e<helpers/ArduinoHelpers.h>
Tff7b72#Tff7b72include T8b949e<helpers/ClientACL.h>
Tff7b72#Tff7b72include T8b949e<helpers/CommonCLI.h>
Tff7b72#Tff7b72include T8b949e<helpers/IdentityStore.h>
Tff7b72#Tff7b72include T8b949e<helpers/SimpleMeshTables.h>
Tff7b72#Tff7b72include T8b949e<helpers/StaticPoolPacketManager.h>
Tff7b72#Tff7b72include T8b949e<helpers/StatsFormatHelper.h>
Tff7b72#Tff7b72include T8b949e<helpers/TxtDataHelpers.h>
Tff7b72#Tff7b72include T8b949e<helpers/RegionMap.h>
Tff7b72#Tff7b72include T8b949e"RateLimiter.h"

Tff7b72#Tff7b72ifdef WITH_BRIDGE
Tff7b72extern Te6edf3AbstractBridgeTff7b72* Te6edf3bridgeTb4b4b4;
Tff7b72#Tff7b72endif

Tff7b72struct T56d364RepeaterStats Tb4b4b4{
Tffa657uint16_t Te6edf3batt_milli_voltsTb4b4b4;
Tffa657uint16_t Te6edf3curr_tx_queue_lenTb4b4b4;
Tffa657int16_t Te6edf3noise_floorTb4b4b4;
Tffa657int16_t Te6edf3last_rssiTb4b4b4;
Tffa657uint32_t Te6edf3n_packets_recvTb4b4b4;
Tffa657uint32_t Te6edf3n_packets_sentTb4b4b4;
Tffa657uint32_t Te6edf3total_air_time_secsTb4b4b4;
Tffa657uint32_t Te6edf3total_up_time_secsTb4b4b4;
Tffa657uint32_t Te6edf3n_sent_floodTb4b4b4, Te6edf3n_sent_directTb4b4b4;
Tffa657uint32_t Te6edf3n_recv_floodTb4b4b4, Te6edf3n_recv_directTb4b4b4;
Tffa657uint16_t Te6edf3err_eventsTb4b4b4; T8b949e// was 'n_full_events'
Tffa657int16_t Te6edf3last_snrTb4b4b4; T8b949e// x 4
Tffa657uint16_t Te6edf3n_direct_dupsTb4b4b4, Te6edf3n_flood_dupsTb4b4b4;
Tffa657uint32_t Te6edf3total_rx_air_time_secsTb4b4b4;
Tffa657uint32_t Te6edf3n_recv_errorsTb4b4b4;
Tb4b4b4}Tb4b4b4;

Tff7b72#Tff7b72ifndef MAX_CLIENTS
Tff7b72#Tff7b72define MAX_CLIENTS 32
Tff7b72#Tff7b72endif

Tff7b72struct T56d364NeighbourInfo Tb4b4b4{
Te6edf3meshTff7b72:Tff7b72:Te6edf3Identity Te6edf3idTb4b4b4;
Tffa657uint32_t Te6edf3advert_timestampTb4b4b4;
Tffa657uint32_t Te6edf3heard_timestampTb4b4b4;
Tffa657int8_t Te6edf3snrTb4b4b4; T8b949e// multiplied by 4, user should divide to get float value
Tb4b4b4}Tb4b4b4;

Tff7b72#Tff7b72ifndef FIRMWARE_BUILD_DATE
Tff7b72#Tff7b72define FIRMWARE_BUILD_DATE "6 Jun 2026"
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72ifndef FIRMWARE_VERSION
Tff7b72#Tff7b72define FIRMWARE_VERSION "v1.16.0"
Tff7b72#Tff7b72endif

Tff7b72#Tff7b72define FIRMWARE_ROLE "repeater"

Tff7b72#Tff7b72define PACKET_LOG_FILE "Tff7b72/Tff7b72packet_log"

Te6edf3class Te6edf3MyMesh Tff7b72: Te6edf3public Te6edf3meshTff7b72:Tff7b72:Te6edf3MeshTb4b4b4, Te6edf3public Te6edf3CommonCLICallbacks Tb4b4b4{
Te6edf3FILESYSTEMTff7b72* Te6edf3_fsTb4b4b4;
Tffa657uint32_t Te6edf3last_millisTb4b4b4;
Tffa657uint64_t Te6edf3uptime_millisTb4b4b4;
Tffa657unsigned Tffa657long Te6edf3next_local_advertTb4b4b4, Te6edf3next_flood_advertTb4b4b4;
Tffa657bool Te6edf3_loggingTb4b4b4;
Te6edf3NodePrefs Te6edf3_prefsTb4b4b4;
Te6edf3ClientACL Te6edf3aclTb4b4b4;
Te6edf3CommonCLI Te6edf3_cliTb4b4b4;
Tffa657uint8_t Te6edf3reply_dataTb4b4b4[Te6edf3MAX_PACKET_PAYLOADTb4b4b4]Tb4b4b4;
Tffa657uint8_t Te6edf3reply_pathTb4b4b4[Te6edf3MAX_PATH_SIZETb4b4b4]Tb4b4b4;
Tffa657int8_t Te6edf3reply_path_lenTb4b4b4;
Tffa657uint8_t Te6edf3reply_path_hash_sizeTb4b4b4;
Te6edf3TransportKeyStore Te6edf3key_storeTb4b4b4;
Te6edf3RegionMap Te6edf3region_mapTb4b4b4, Te6edf3temp_mapTb4b4b4;
Te6edf3RegionEntryTff7b72* Te6edf3load_stackTb4b4b4[T79c0ff8Tb4b4b4]Tb4b4b4;
Te6edf3RegionEntryTff7b72* Te6edf3recv_pkt_regionTb4b4b4;
Te6edf3TransportKey Te6edf3default_scopeTb4b4b4;
Te6edf3RateLimiter Te6edf3discover_limiterTb4b4b4, Te6edf3anon_limiterTb4b4b4;
Tffa657uint32_t Te6edf3pending_discover_tagTb4b4b4;
Tffa657unsigned Tffa657long Te6edf3pending_discover_untilTb4b4b4;
Tffa657bool Te6edf3region_load_activeTb4b4b4;
Tffa657unsigned Tffa657long Te6edf3dirty_contacts_expiryTb4b4b4;
Tff7b72#Tff7b72if MAX_NEIGHBOURS
Te6edf3NeighbourInfo Te6edf3neighboursTb4b4b4[Te6edf3MAX_NEIGHBOURSTb4b4b4]Tb4b4b4;
Tff7b72#Tff7b72endif
Te6edf3CayenneLPP Te6edf3telemetryTb4b4b4;
Tffa657unsigned Tffa657long Te6edf3set_radio_atTb4b4b4, Te6edf3revert_radio_atTb4b4b4;
Tffa657float Te6edf3pending_freqTb4b4b4;
Tffa657float Te6edf3pending_bwTb4b4b4;
Tffa657uint8_t Te6edf3pending_sfTb4b4b4;
Tffa657uint8_t Te6edf3pending_crTb4b4b4;
Tffa657int Te6edf3matching_peer_indexesTb4b4b4[Te6edf3MAX_CLIENTSTb4b4b4]Tb4b4b4;
Tff7b72#Tff7b72if defined(WITH_RS232_BRIDGE)
Te6edf3RS232Bridge Te6edf3bridgeTb4b4b4;
Tff7b72#Tff7b72elif defined(WITH_ESPNOW_BRIDGE)
Te6edf3ESPNowBridge Te6edf3bridgeTb4b4b4;
Tff7b72#Tff7b72endif

Tffa657void Td2a8ffputNeighbourTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3IdentityTff7b72& Te6edf3idTb4b4b4, Tffa657uint32_t Te6edf3timestampTb4b4b4, Tffa657float Te6edf3snrTb4b4b4)Tb4b4b4;
Tffa657uint8_t Td2a8ffhandleLoginReqTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3IdentityTff7b72& Te6edf3senderTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3secretTb4b4b4, Tffa657uint32_t Te6edf3sender_timestampTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3dataTb4b4b4, Tffa657bool Te6edf3is_floodTb4b4b4)Tb4b4b4;
Tffa657uint8_t Td2a8ffhandleAnonRegionsReqTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3IdentityTff7b72& Te6edf3senderTb4b4b4, Tffa657uint32_t Te6edf3sender_timestampTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3dataTb4b4b4)Tb4b4b4;
Tffa657uint8_t Td2a8ffhandleAnonOwnerReqTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3IdentityTff7b72& Te6edf3senderTb4b4b4, Tffa657uint32_t Te6edf3sender_timestampTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3dataTb4b4b4)Tb4b4b4;
Tffa657uint8_t Td2a8ffhandleAnonClockReqTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3IdentityTff7b72& Te6edf3senderTb4b4b4, Tffa657uint32_t Te6edf3sender_timestampTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3dataTb4b4b4)Tb4b4b4;
Tffa657int Td2a8ffhandleRequestTb4b4b4(Te6edf3ClientInfoTff7b72* Te6edf3senderTb4b4b4, Tffa657uint32_t Te6edf3sender_timestampTb4b4b4, Tffa657uint8_tTff7b72* Te6edf3payloadTb4b4b4, Tffa657size_t Te6edf3payload_lenTb4b4b4)Tb4b4b4;
Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Td2a8ffcreateSelfAdvertTb4b4b4(Tb4b4b4)Tb4b4b4;

Te6edf3File Td2a8ffopenAppendTb4b4b4(Tff7b72const Tffa657charTff7b72* Te6edf3fnameTb4b4b4)Tb4b4b4;
Tffa657bool Td2a8ffisLoopedTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4, Tff7b72const Tffa657uint8_t Te6edf3max_countersTb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;

Te6edf3protectedTff7b72:
Tffa657float Te6edf3getAirtimeBudgetFactorTb4b4b4(Tb4b4b4) Tff7b72const Te6edf3override Tb4b4b4{
Tff7b72return Te6edf3_prefsTb4b4b4.Te6edf3airtime_factorTb4b4b4;
Tb4b4b4}

Tffa657bool Te6edf3allowPacketForwardTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4) Te6edf3overrideTb4b4b4;
Tff7b72const Tffa657charTff7b72* Td2a8ffgetLogDateTimeTb4b4b4(Tb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8fflogRxRawTb4b4b4(Tffa657float Te6edf3snrTb4b4b4, Tffa657float Te6edf3rssiTb4b4b4, Tff7b72const Tffa657uint8_t Te6edf3rawTb4b4b4[Tb4b4b4]Tb4b4b4, Tffa657int Te6edf3lenTb4b4b4) Te6edf3overrideTb4b4b4;

Tffa657void Td2a8fflogRxTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3pktTb4b4b4, Tffa657int Te6edf3lenTb4b4b4, Tffa657float Te6edf3scoreTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8fflogTxTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3pktTb4b4b4, Tffa657int Te6edf3lenTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8fflogTxFailTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3pktTb4b4b4, Tffa657int Te6edf3lenTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657int Td2a8ffcalcRxDelayTb4b4b4(Tffa657float Te6edf3scoreTb4b4b4, Tffa657uint32_t Te6edf3air_timeTb4b4b4) Tff7b72const Te6edf3overrideTb4b4b4;

Tffa657uint32_t Td2a8ffgetRetransmitDelayTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657uint32_t Td2a8ffgetDirectRetransmitDelayTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4) Te6edf3overrideTb4b4b4;

Tffa657int Td2a8ffgetInterferenceThresholdTb4b4b4(Tb4b4b4) Tff7b72const Te6edf3override Tb4b4b4{
Tff7b72return Te6edf3_prefsTb4b4b4.Te6edf3interference_thresholdTb4b4b4;
Tb4b4b4}
Tffa657bool Td2a8ffgetCADEnabledTb4b4b4(Tb4b4b4) Tff7b72const Te6edf3override Tb4b4b4{
Tff7b72return Te6edf3_prefsTb4b4b4.Te6edf3cad_enabledTb4b4b4;
Tb4b4b4}
Tffa657int Td2a8ffgetAGCResetIntervalTb4b4b4(Tb4b4b4) Tff7b72const Te6edf3override Tb4b4b4{
Tff7b72return Tb4b4b4(Tb4b4b4(Tffa657intTb4b4b4)Te6edf3_prefsTb4b4b4.Te6edf3agc_reset_intervalTb4b4b4) Tff7b72* T79c0ff4000Tb4b4b4; T8b949e// milliseconds
Tb4b4b4}
Tffa657uint8_t Td2a8ffgetExtraAckTransmitCountTb4b4b4(Tb4b4b4) Tff7b72const Te6edf3override Tb4b4b4{
Tff7b72return Te6edf3_prefsTb4b4b4.Te6edf3multi_acksTb4b4b4;
Tb4b4b4}

Tff7b72#Tff7b72if ENV_INCLUDE_GPS == 1
Tffa657void Td2a8ffapplyGpsPrefsTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3sensorsTb4b4b4.Te6edf3setSettingValueTb4b4b4(Ta5d6ff"Ta5d6ffgpsTa5d6ff"Tb4b4b4, Te6edf3_prefsTb4b4b4.Te6edf3gps_enabledTff7b72?Ta5d6ff"Ta5d6ff1Ta5d6ff"Tff7b72:Ta5d6ff"Ta5d6ff0Ta5d6ff"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif

Te6edf3meshTff7b72:Tff7b72:Te6edf3DispatcherAction Td2a8ffonRecvPacketTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3pktTb4b4b4) Te6edf3overrideTb4b4b4;

Tffa657void Td2a8ffonAnonDataRecvTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3secretTb4b4b4, Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3IdentityTff7b72& Te6edf3senderTb4b4b4, Tffa657uint8_tTff7b72* Te6edf3dataTb4b4b4, Tffa657size_t Te6edf3lenTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657int Td2a8ffsearchPeersByHashTb4b4b4(Tff7b72const Tffa657uint8_tTff7b72* Te6edf3hashTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffgetPeerSharedSecretTb4b4b4(Tffa657uint8_tTff7b72* Te6edf3dest_secretTb4b4b4, Tffa657int Te6edf3peer_idxTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffonAdvertRecvTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4, Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3IdentityTff7b72& Te6edf3idTb4b4b4, Tffa657uint32_t Te6edf3timestampTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3app_dataTb4b4b4, Tffa657size_t Te6edf3app_data_lenTb4b4b4)Tb4b4b4;
Tffa657void Td2a8ffonPeerDataRecvTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4, Tffa657uint8_t Te6edf3typeTb4b4b4, Tffa657int Te6edf3sender_idxTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3secretTb4b4b4, Tffa657uint8_tTff7b72* Te6edf3dataTb4b4b4, Tffa657size_t Te6edf3lenTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657bool Td2a8ffonPeerPathRecvTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4, Tffa657int Te6edf3sender_idxTb4b4b4, Tff7b72const Tffa657uint8_tTff7b72* Te6edf3secretTb4b4b4, Tffa657uint8_tTff7b72* Te6edf3pathTb4b4b4, Tffa657uint8_t Te6edf3path_lenTb4b4b4, Tffa657uint8_t Te6edf3extra_typeTb4b4b4, Tffa657uint8_tTff7b72* Te6edf3extraTb4b4b4, Tffa657uint8_t Te6edf3extra_lenTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffonControlDataRecvTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4) Te6edf3overrideTb4b4b4;

Tffa657void Td2a8ffsendFloodReplyTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3packetTb4b4b4, Tffa657unsigned Tffa657long Te6edf3delay_millisTb4b4b4, Tffa657uint8_t Te6edf3path_hash_sizeTb4b4b4)Tb4b4b4;

Te6edf3publicTff7b72:
Te6edf3MyMeshTb4b4b4(Te6edf3meshTff7b72:Tff7b72:Te6edf3MainBoardTff7b72& Te6edf3boardTb4b4b4, Te6edf3meshTff7b72:Tff7b72:Te6edf3RadioTff7b72& Te6edf3radioTb4b4b4, Te6edf3meshTff7b72:Tff7b72:Te6edf3MillisecondClockTff7b72& Te6edf3msTb4b4b4, Te6edf3meshTff7b72:Tff7b72:Te6edf3RNGTff7b72& Te6edf3rngTb4b4b4, Te6edf3meshTff7b72:Tff7b72:Te6edf3RTCClockTff7b72& Te6edf3rtcTb4b4b4, Te6edf3meshTff7b72:Tff7b72:Te6edf3MeshTablesTff7b72& Te6edf3tablesTb4b4b4)Tb4b4b4;

Tffa657void Td2a8ffbeginTb4b4b4(Te6edf3FILESYSTEMTff7b72* Te6edf3fsTb4b4b4)Tb4b4b4;
Tffa657void Td2a8ffsendNodeDiscoverReqTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Tffa657charTff7b72* Td2a8ffgetFirmwareVerTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{ Tff7b72return Te6edf3FIRMWARE_VERSIONTb4b4b4; Tb4b4b4}
Tff7b72const Tffa657charTff7b72* Td2a8ffgetBuildDateTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{ Tff7b72return Te6edf3FIRMWARE_BUILD_DATETb4b4b4; Tb4b4b4}
Tff7b72const Tffa657charTff7b72* Td2a8ffgetRoleTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{ Tff7b72return Te6edf3FIRMWARE_ROLETb4b4b4; Tb4b4b4}
Tff7b72const Tffa657charTff7b72* Td2a8ffgetNodeNameTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return Te6edf3_prefsTb4b4b4.Te6edf3node_nameTb4b4b4; Tb4b4b4}
Te6edf3NodePrefsTff7b72* Td2a8ffgetNodePrefsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72&Te6edf3_prefsTb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffsavePrefsTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3_cliTb4b4b4.Te6edf3savePrefsTb4b4b4(Te6edf3_fsTb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffsendFloodScopedTb4b4b4(Tff7b72const Te6edf3TransportKeyTff7b72& Te6edf3scopeTb4b4b4, Te6edf3meshTff7b72:Tff7b72:Te6edf3PacketTff7b72* Te6edf3pktTb4b4b4, Tffa657uint32_t Te6edf3delay_millisTb4b4b4, Tffa657uint8_t Te6edf3path_hash_sizeTb4b4b4)Tb4b4b4;

T8b949e// CommonCLICallbacks
Tffa657void Td2a8ffapplyTempRadioParamsTb4b4b4(Tffa657float Te6edf3freqTb4b4b4, Tffa657float Te6edf3bwTb4b4b4, Tffa657uint8_t Te6edf3sfTb4b4b4, Tffa657uint8_t Te6edf3crTb4b4b4, Tffa657int Te6edf3timeout_minsTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657bool Td2a8ffformatFileSystemTb4b4b4(Tb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffsendSelfAdvertisementTb4b4b4(Tffa657int Te6edf3delay_millisTb4b4b4, Tffa657bool Te6edf3floodTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffupdateAdvertTimerTb4b4b4(Tb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffupdateFloodAdvertTimerTb4b4b4(Tb4b4b4) Te6edf3overrideTb4b4b4;

Tffa657void Td2a8ffsetLoggingOnTb4b4b4(Tffa657bool Te6edf3enableTb4b4b4) Te6edf3override Tb4b4b4{ Te6edf3_logging Tff7b72= Te6edf3enableTb4b4b4; Tb4b4b4}

Tffa657void Td2a8fferaseLogFileTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{
Te6edf3_fsTff7b72-Tff7b72>Te6edf3removeTb4b4b4(Te6edf3PACKET_LOG_FILETb4b4b4)Tb4b4b4;
Tb4b4b4}

Tffa657void Td2a8ffdumpLogFileTb4b4b4(Tb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffsetTxPowerTb4b4b4(Tffa657int8_t Te6edf3power_dbmTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffformatNeighborsReplyTb4b4b4(Tffa657char Tff7b72*Te6edf3replyTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffremoveNeighborTb4b4b4(Tff7b72const Tffa657uint8_tTff7b72* Te6edf3pubkeyTb4b4b4, Tffa657int Te6edf3key_lenTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffformatStatsReplyTb4b4b4(Tffa657char Tff7b72*Te6edf3replyTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffformatRadioStatsReplyTb4b4b4(Tffa657char Tff7b72*Te6edf3replyTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffformatPacketStatsReplyTb4b4b4(Tffa657char Tff7b72*Te6edf3replyTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffstartRegionsLoadTb4b4b4(Tb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657bool Td2a8ffsaveRegionsTb4b4b4(Tb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffonDefaultRegionChangedTb4b4b4(Tff7b72const Te6edf3RegionEntryTff7b72* Te6edf3rTb4b4b4) Te6edf3overrideTb4b4b4;

Te6edf3meshTff7b72:Tff7b72:Te6edf3LocalIdentityTff7b72& Td2a8ffgetSelfIdTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{ Tff7b72return Te6edf3self_idTb4b4b4; Tb4b4b4}

Tffa657void Td2a8ffsaveIdentityTb4b4b4(Tff7b72const Te6edf3meshTff7b72:Tff7b72:Te6edf3LocalIdentityTff7b72& Te6edf3new_idTb4b4b4) Te6edf3overrideTb4b4b4;
Tffa657void Td2a8ffclearStatsTb4b4b4(Tb4b4b4) Te6edf3overrideTb4b4b4;

Tffa657void Td2a8ffhandleCommandTb4b4b4(Tffa657uint32_t Te6edf3sender_timestampTb4b4b4, Tffa657charTff7b72* Te6edf3commandTb4b4b4, Tffa657charTff7b72* Te6edf3replyTb4b4b4)Tb4b4b4;
Tffa657void Td2a8ffloopTb4b4b4(Tb4b4b4)Tb4b4b4;

Tff7b72#Tff7b72if defined(WITH_BRIDGE)
Tffa657void Td2a8ffsetBridgeStateTb4b4b4(Tffa657bool Te6edf3enableTb4b4b4) Te6edf3override Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3enable Tff7b72=Tff7b72= Te6edf3bridgeTb4b4b4.Te6edf3isRunningTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3enableTb4b4b4)
Tb4b4b4{
Te6edf3bridgeTb4b4b4.Te6edf3beginTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72else
Tb4b4b4{
Te6edf3bridgeTb4b4b4.Te6edf3endTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

Tffa657void Td2a8ffrestartBridgeTb4b4b4(Tb4b4b4) Te6edf3override Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3bridgeTb4b4b4.Te6edf3isRunningTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Te6edf3bridgeTb4b4b4.Te6edf3endTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3bridgeTb4b4b4.Te6edf3beginTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif

T8b949e// To check if there is pending work
Tffa657bool Td2a8ffhasPendingWorkTb4b4b4(Tb4b4b4) Tff7b72constTb4b4b4;

Tffa657bool Td2a8ffsetRxBoostedGainTb4b4b4(Tffa657bool Te6edf3enableTb4b4b4) Te6edf3overrideTb4b4b4;

Tb4b4b4}Tb4b4b4;

Served by rngit 1.5.4 - Generated in 0.09s